package com.wangyf.thread2;

import java.util.concurrent.TimeUnit;

/**
 * 与 T05_interrupt_sleep配合可以看出：线程sleep、wait、join的时候 如果设置了打断标志位，
 * 那么会抛出异常。
 *
 * 这个类测试 如果线程在争抢锁的时候，被设置了中断标志位，那么会不会像上面一样抛出异常。
 * @author wangyf
 * @date 2021/7/19 20:10
 * 结论： 不会。
 */
public class T06_interrupt_sync_lock {

    public static Object o = new Object();

    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            synchronized (o) {
                try {
                    TimeUnit.SECONDS.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        t.start();
        TimeUnit.SECONDS.sleep(1);

        Thread t2 = new Thread(() -> {
            synchronized (o) {

            }
            System.out.println("t2 end");
        });
        t2.start();
        TimeUnit.SECONDS.sleep(2);
        t2.interrupt();// 设置t2中断标识。 设置中断标识的时候，t2肯定已经启动了，但是没有抛出异常，所以结论是
        // 设置标识位为中断状态，并不会让争抢锁的线程抛出异常。
    }
}
